package com.ruoyi.oss.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.oss.domain.SysOss;
import com.ruoyi.oss.domain.bo.SysOssSearchListBo;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * oss文件储存表服务
 *
 * @author xueyu
 */
public interface SysOssService extends IService<SysOss> {


    /**
     * 查询文件上传记录
     *
     * @param searchBo   查询文件上传记录搜索条件
     * @param pageDomain 分页参数
     * @return 文件上传记录参数
     */
    Page<SysOss> pageList(SysOssSearchListBo searchBo, PageDomain pageDomain);

    /**
     * 上传oss文件
     *
     * @param multipartFile 多部份文件
     * @return oss上传记录
     */
    SysOss upload(MultipartFile multipartFile);

    /**
     * 根据id查询数据
     *
     * @param id id
     * @return 文件上传记录
     */
    SysOss findById(Long id);


    /**
     * 下载文件
     *
     * @param sysOss              文件上传记录
     * @param httpServletRequest  请求
     * @param httpServletResponse 响应
     * @return 响应体
     */
    ResponseEntity<StreamingResponseBody> download(SysOss sysOss, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse);
}
